
package com.ruoyi.busi.contest.service;

import com.ruoyi.busi.contest.domain.CompetitionStage;
import com.ruoyi.busi.contest.domain.Contest;
import com.ruoyi.busi.contest.domain.dto.CompetitionCreateDTO;
import com.ruoyi.busi.contest.domain.dto.CompetitionUpdateDTO;
import com.ruoyi.common.core.core.domain.AjaxResult;
import com.ruoyi.common.orm.core.page.TableDataInfo;

import java.util.List;

/**
 * 大赛主表Service接口
 */
public interface IContestService {
    /**
     * 查询大赛
     */
    CompetitionCreateDTO selectContestById(Long id);

    /**
     * 查询大赛列表
     */
    List<Contest> selectContestList(Contest contest);
    

    /**
     * 创建大赛(完整信息)
     * @param dto 大赛创建参数
     * @return 创建结果
     */
    AjaxResult createCompetition(CompetitionCreateDTO dto);



    /**
     * 修改大赛(完整信息)
     * @param dto 大赛更新参数
     * @return 修改结果
     */
    AjaxResult updateCompetition(CompetitionCreateDTO dto);


    /**
     * 删除大赛信息
     */
    int deleteContestById(Long id);

    /**
     * 批量删除大赛
     */
    int deleteContestByIds(Long[] ids);

    /**
     * 获取大赛基本信息
     */
    Contest getContestBasicInfo(Long id);
    
    /**
     * 更新大赛状态和当前阶段
     * @param id 大赛ID
     * @param status 状态值
     * @param currentStage 当前阶段
     * @return 更新结果
     */
    AjaxResult updateContestStatusAndStage(Long id, Integer status, String currentStage);
    
    /**
     * 查询大赛所有阶段
     * @param competitionId 大赛ID
     * @return 阶段列表
     */
    List<CompetitionStage> getCompetitionStages(Long competitionId);
}
